package tp.algo2.futbol.refactoring.KarinaVillamayor

import tp.algo2.futbol.Jugador
import tp.algo2.futbol.Partido

import tp.algo2.futbol.refactoring.AlexBaico.InfraccionBuilder
import tp.algo2.futbol.refactoring.AlexBaico.InfraccionPorDiaBuilder
import tp.algo2.futbol.refactoring.AlexBaico.InfraccionPorHorasBuilder
import tp.algo2.futbol.refactoring.AlexBaico.InfraccionPorSiempreBuilder


class Arbitro {
	
	@Property Partido partidoArbitar
	@Property InfraccionBuilder builder
	
	def sacarTarjetaAmarillaA (Jugador jugador, Partido partido) {
					
		if (jugador.contadorCeroPuntos != 3) {
			
    		jugador.contadorCeroPts()
    		
			if (jugador.cantidadTarjetasAmarillas.equals(5) ) {
    			jugador.puntos = jugador.puntos - jugador.leve
        		jugador.suspendido = true
        		this.elegirBuilderPorDias()	
       		 }        	   		
		}
	}
	
	def sacarTarjetaRojaA (Jugador jugador, Partido partido) {
		
		if (jugador.puntos != 3) {
			
			jugador.contadorCeroPts()
		
			if ((jugador.cantidadTarjetasAmarillas >= 2)  && (partido.idPartido == partido.estePartido)) {
				jugador.puntos = jugador.puntos - jugador.grave
				jugador.expulsado = true
				this.elegirBuilderPorDias()
			}
		}
	}
	
	def infraccionarA(Jugador jugador, int numero) {
		
		
		if (jugador.contadorCeroPuntos.equals(1)) {
			this.elegirBuilderPorHoras()
			builder.crearInfraccion(numero)
			jugador.infraccionPor(builder.getInfraccion)
		}
		else {
				if (jugador.contadorCeroPuntos.equals(2)) {
				this.elegirBuilderPorDias()
				this.asignarInfraccion(jugador,numero)
			}
			else {
					if (jugador.contadorCeroPuntos.equals(2)) {
					this.elegirBuilderPorDias()
					this.asignarInfraccion(jugador,numero)	
				}
			}		
		}
	}
	
	def asignarInfraccion (Jugador jugador, int numero) {
		builder.crearInfraccion(numero)
		jugador.infraccionPor(builder.getInfraccion)
	}
	
	def elegirBuilderPorDias(){
		builder = new InfraccionPorDiaBuilder
	}
	
	def elegirBuilderPorHoras(){
		builder = new InfraccionPorHorasBuilder
	}
	
	def elegirBuilderPorSiempre(){
		builder = new InfraccionPorSiempreBuilder
	}
}

